﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;

namespace App_Persistencia
{
    public class Salon_Data
    {
        private int id;

        public int Id
        {
            get { return id; }
            set { id = value; }
        }

        private string nombre;

        public string Nombre
        {
          get { return nombre; }
          set { nombre = value; }
        }

        private int capacidad;

        public int Capacidad
        {
            get { return capacidad; }
            set { capacidad = value; }
        }
        
        private float precio;

        public float Precio
        {
            get { return precio; }
            set { precio = value; }
        }
        //falta atributo imagen

        private string imagen;

        public string Imagen
        {
            get { return imagen; }
            set { imagen = value; }
        }
        
        private string calle;

        public string Calle
        {
            get { return calle; }
            set { calle = value; }
        }
        
        private int numero;

        public int Numero
        {
            get { return numero; }
            set { numero = value; }
        }
       
        private int piso;

        public int Piso
        {
            get { return piso; }
            set { piso = value; }
        }
        
        private string depto;

        public string Depto
        {
            get { return depto; }
            set { depto = value; }
        }
       
        private int barrio_Id;

        public int Barrio_Id
        {
            get { return barrio_Id; }
            set { barrio_Id = value; }
        }

        private int telefono;

        public int Telefono
        {
            get { return telefono; }
            set { telefono = value; }
        }

        public DataView cargarSalon()
        {
            //Creo la sentencia SQL
            string commandSQL = "SELECT sal_Id, sal_Nombre FROM Salon";

            // Creo el Objeto DataAdapter y le paso la cadena al constructor y la sentencia SQL
            string conexion = ConfigurationManager.ConnectionStrings["CadenaConexion"].ConnectionString;
            SqlDataAdapter dataAdapter = new SqlDataAdapter(commandSQL, conexion);

            // Creo el Objeto DataSet
            DataSet dataSet = new DataSet();

            // Relleno el Objeto DataSet
            dataAdapter.Fill(dataSet, "Salon");

            //creo la vista de la consulta
            DataView dataView = new DataView();

            //Cargo la Vista con el contenido de la tabla de resultados
            dataView = dataSet.Tables["Salon"].DefaultView;

            // Obtengo la tabla del DataSet
            //DataTable dataTable = dataSet.Tables["Ejercicio"];

            return dataView;

            // --- Vercion Profesor con edicion de GridView

        }

        /**
         * lo que hay que hacer con todos los metodos de busqueda es hacerlo por todos los 
         * atributos que por los que se quiera buscar. ver si te tiene que devolver un datatable
         * o nada cargando los datos.
         * la otra es si es uno, cargar el objeto devolver null y si es mas de uno cargar un datatable
         */

        public void buscarDatosSalon()
        {
            string commandSQL = "SELECT   sal_Capacidad AS Capacidad, sal_Nombre AS Nombre, sal_calle AS Calle,  "
                                +"    sal_Numero AS Numero, sal_Imagen AS Imagen, sal_Piso AS Piso,  " 
                                +"   sal_Depto AS Depto,  sal_Telefono AS Telefono, barrio_Id AS Barrio,  "
                                 +"  sal_Precio AS Precio FROM  Salon WHERE Salon.sal_Id =" + id;
            
            
            string conexion = ConfigurationManager.ConnectionStrings["CadenaConexion"].ConnectionString;
            System.Data.SqlClient.SqlConnection connection = new SqlConnection(conexion);

            try
            {
                connection.Open();
                SqlDataAdapter dataAdapter = new SqlDataAdapter(commandSQL,connection);
                DataSet dataSet = new DataSet();
                dataAdapter.Fill(dataSet, "Salon");
                DataRow salon = dataSet.Tables["Salon"].Rows[0];
                this.Capacidad= int.Parse(salon["Capacidad"].ToString());
                this.Nombre= salon["Nombre"].ToString();
                this.Calle= salon["Calle"].ToString();
                this.Numero= int.Parse(salon["Numero"].ToString());
                this.Imagen = salon["Imagen"].ToString();
                this.Precio = float.Parse(salon["Precio"].ToString());
                this.Piso = int.Parse(salon["Piso"].ToString());
                this.Depto = salon["Depto"].ToString();
                this.Barrio_Id = int.Parse(salon["Barrio"].ToString());
                this.Telefono = int.Parse(salon["Telefono"].ToString());
                
            }
            catch (Exception e)
            {
                //si se produjo algun error lo capturo y ejecuto el Rollback de la transaccion
                //transaccion.Rollback();
                //provoco una Exepcion para la capa superior
                System.Diagnostics.Trace.Write(e.Message);
                throw new ApplicationException();
            }
            finally
            {
                //Si termino la carga correctamente cierro la conexion
                connection.Close();
            }
        }

        public void buscarUnSalon()
        {
            // Crear el Objeto de conexion, inicializa con la cadena de conexion
            string conexion = ConfigurationManager.ConnectionStrings["CadenaConexion"].ConnectionString;
            System.Data.SqlClient.SqlConnection connection = new SqlConnection(conexion);

            // Abro la conexion
            connection.Open();

            //Invoco al Objeto SqlTransaction para manejar la transaccion  
            //ejecuto la transaccion
            //SqlTransaction transaccion = connection.BeginTransaction(); ;

            try
            {
                // Creo el Objeto Command, le asigno la conexion y el Procediminto a utilizar
                System.Data.SqlClient.SqlCommand command = new System.Data.SqlClient.SqlCommand();
                //Asigno a la propiedad Transaction del Objeto SqlCommand el valor del Objeto SqlTransaction
                //command.Transaction = transaccion;
                //Asingo la conexion al objeto conection
                command.Connection = connection;
                command.CommandText = "spBuscarUnSalon";
                command.CommandType = CommandType.StoredProcedure;

                // Declaro el Objeto de parametro
                System.Data.SqlClient.SqlParameter param;

                // Establesco el parametro @SocId, uso como entrada los atributos de la clase
                param = command.Parameters.AddWithValue("@SalId", id);
                param.DbType = DbType.Int32;
                param.Direction = ParameterDirection.Input;

                //// Establesco el parametro @SocDenom                
                //param = command.Parameters.AddWithValue("@SalNombre", nombre);
                //param.DbType = DbType.String;
                //param.Size = 50;
                //param.Direction = ParameterDirection.Output;

                //// Establesco el parametro @SocDNI
                param = command.Parameters.AddWithValue("@SalPrecio", precio);
                param.DbType = DbType.Double;
                param.Direction = ParameterDirection.Output;

                // Ejecuto el procedimiento
                command.ExecuteNonQuery();

                //recupero el valor del parametro @UsuarioId
                //usuarioId = Convert.ToInt32(command.Parameters["@UsuarioId"].Value);
                precio = float.Parse(command.Parameters["@SalPrecio"].Value.ToString());

                //socNombre = command.Parameters["@SocDenom"].Value.ToString();
                //socDNI = Convert.ToInt32(command.Parameters["@SocDNI"].Value);
                //socTelefono = command.Parameters["@SocTelefono"].Value.ToString();
                //socDireccion = command.Parameters["@SocDir"].Value.ToString();
                //socDirNum = command.Parameters["@SocDirNum"].Value.ToString();
                //socDirDepto = command.Parameters["@SocDirDepto"].Value.ToString();
                //socTelEmerg = command.Parameters["@SocTelEmergencia"].Value.ToString();
                //socContacto = command.Parameters["@SocContacto"].Value.ToString();
                //socFecNac = Convert.ToDateTime(command.Parameters["@SocFecNac"].Value);
                //socEstatura = Convert.ToDouble(command.Parameters["@SocEstatura"].Value);
                //socEmail = command.Parameters["@SocEmail"].Value.ToString();
                //socEstado = Convert.ToInt32(command.Parameters["@SocEstado"].Value);
                //socPlan = Convert.ToInt32(command.Parameters["@SocPlan"].Value);

            }
            catch (Exception e)
            {
                //si se produjo algun error lo capturo y ejecuto el Rollback de la transaccion
                //transaccion.Rollback();
                //provoco una Exepcion para la capa superior
                System.Diagnostics.Trace.Write(e.Message);
                throw new ApplicationException();
            }
            finally
            {
                //Si termino la carga correctamente cierro la conexion
                connection.Close();
            }
        }

        //public void damePrecio()
        //{

        //    //Creo la sentencia SQL
        //    string commandSQL = "SELECT sal_Precio FROM Salon WHERE sal_Id = " + this.Id;

        //    // Creo el Objeto DataAdapter y le paso la cadena al constructor y la sentencia SQL
        //    SqlDataAdapter dataAdapter = new SqlDataAdapter(commandSQL, Librerias.MyConexion);

        //    // Creo el Objeto DataSet
        //    DataSet dataSet = new DataSet();

        //    // Relleno el Objeto DataSet
        //    dataAdapter.Fill(dataSet, "Salon");

        //    //creo la vista de la consulta
        //    DataView dataView = new DataView();

        //    //Cargo la Vista con el contenido de la tabla de resultados
        //    dataView = dataSet.Tables["Salon"].DefaultView;

        //    // Obtengo la tabla del DataSet
        //    DataTable dataTable = dataSet.Tables["Salon"];

        //    this.Precio = Convert.ToDouble(commandSQL["@sal_Precio"].Value);

        //}
    }
}
